package com.witmore.neutron.ai.web.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jk.common.response.ResponsePageResult;
import com.jk.common.response.ResponseResult;
import com.witmore.neutron.ai.db.entity.ProviderProfileDO;
import com.witmore.neutron.ai.web.apiv2.controller.vo.*;

/**
 * 服务商信息服务接口
 * Author: 豆子高
 * Date: 2025/01/XX
 */
public interface ProviderProfileService {

    /**
     * 用户提交创建服务商
     * @param createParam 用户创建参数
     * @return 响应结果
     */
    ResponseResult<Void> createProviderByUser(ProviderProfileUserCreateParam createParam);

    /**
     * 管理员创建服务商
     * @param createParam 管理员创建参数
     * @return 响应结果
     */
    ResponseResult<Void> createProviderByAdmin(ProviderProfileAdminCreateParam createParam);

    /**
     * 更新服务商
     * @param updateParam 更新参数
     * @return 响应结果
     */
    ResponseResult<Void> updateProvider(ProviderProfileUpdateParam updateParam);

    /**
     * 删除服务商
     * @param id 服务商ID
     * @return 响应结果
     */
    ResponseResult<Void> deleteProvider(Integer id);

    /**
     * 根据ID获取服务商详情
     * @param id 服务商ID
     * @return 服务商详情
     */
    ResponseResult<ProviderProfileDO> getProviderById(Integer id);

    /**
     * 分页查询服务商列表
     * @param queryParam 查询参数
     * @return 分页结果
     */
    Page<ProviderProfileDO> getProviderPage(ProviderProfileQueryParam queryParam);

    /**
     * 审核服务商
     * @param auditParam 审核参数
     * @return 响应结果
     */
    ResponseResult<Void> auditProvider(ProviderAuditParam auditParam);

    /**
     * 分页查询服务商员工列表
     * @param queryParam 查询参数
     * @return 分页结果
     */
    ResponsePageResult<ProviderEmployeeResult> getProviderEmployeePage(ProviderEmployeeQueryParam queryParam);

    /**
     * 根据用户ID获取用户关联的服务商信息
     * @param userId 用户ID
     * @return 服务商信息，如果用户没有关联服务商则返回null
     */
    ProviderEmployeeResult getUserProviderInfo(Integer userId);
}
